
#ifndef H_C_ITERATOR_H
#define H_C_ITERATOR_H
#include "ctypes.h"

typedef enum tagEContainerType{
	ECRT_VECTOR,
	ECRT_LIST,
	ECRT_DEQUE,
	ECRT_SLIST,
	ECRT_RBTREE,
	ECRT_MAP,
	ECRT_MULTIMAP,
	ECRT_SET,
	ECRT_MULTISET,
	ECRT_HASH_SET,
	ECRT_HASH_MULTISET,
	ECRT_HASH_MAP,
	ECRT_HASH_MULTIMAP,
	ECRT_BASIC_STRING
}EContainerType;

typedef enum tagEIteratorType
{
	EIRT_INPUT,
	EIRT_OUTPUT,
	EIRT_FORWARD,
	EIRT_BIDIRECTIONAL,
	EIRT_RANDOM_ACCESS
}EIteratorType;

typedef struct tagSIterator{	
	char*           pcCurPos;    
	void*           pstContainer;
	EContainerType  eContainerType;
	EIteratorType   eIteratorType;
}SIterator, *PSIterator;


#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif

#endif